package com.atguigu.reflect;

import java.lang.reflect.Field;

public class ChangeStringValue {
    public static void main(String[] args) throws Exception {
        String str = new String("abc");
        System.out.println(str);
        //反射的技术去获取私有属性  ，操作私有属性是不是很不合理
        //1、获取String类对象的那个class
        Class clazz = str.getClass();
//        2、获取clazz获取类中的value属性
        Field field = clazz.getDeclaredField("value");
        //3、直接去操作属性的值不可以  设置私有属性可以被操作
        field.setAccessible(true);
        //4、获取value属性里面的值（内存地址）
//        private final char value[]={'a','b','c'}
        char[] temp = (char[]) field.get(str);
        //通过temp的地址引用 找到真实String对象中的数组  修改数组内每一个元素
        temp[0]='g';temp[1]='k';temp[2]='f';
        System.out.println(str);





    }
}
